// 蜂窝蜜造平台生成代码，如手工更改，请添加到 .beeignore 忽略生成

package com.fowo.api.model.shop.authorization;

import com.fowo.api.common.annotaion.DataObjectType;
import com.fowo.api.common.meta.MetaDataObject;
import com.fowo.api.common.meta.MetaDataObjects;
import com.fowo.api.common.model.PageSearch;
import com.fowo.api.common.mybatis.helper.PageSearchHelper;
import com.fowo.api.common.util.ListUtils;
import com.fowo.api.entity.ShopAuthorization;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

@DataObjectType(ShopAuthorization.class)
@Setter
@Getter
public class ShopAuthorizationSearchParamPo extends PageSearch {

  private static MetaDataObject metaDataObject;

  @Override
  public void applySqlSegments() {
    if (metaDataObject == null) {
      metaDataObject =
        ListUtils.find(
          MetaDataObjects.getObjects(),
          o -> "ShopAuthorization".equals(o.getName())
        );
    }
    PageSearchHelper.fillSqlSegments(this, metaDataObject);
  }

  @Override
  public void initFinal() {
    super.initFinal();
    applySqlSegments();
  }

  /**
   * 获取关联字段的查询表别名信息
   */
  @Override
  public Map<String, String> getJoinFieldTableAliasMap() {
    Map<String, String> map = new HashMap<>();
    map.put("country", "sr");
    return map;
  }

  @Override
  public Map<String, OptionalJoinField> getOptionalJoinFields() {
    Map<String, OptionalJoinField> map = new HashMap<>();
    map.put(
      "shops.country",
      new OptionalJoinField()
        .setJoinPart(
          "LEFT JOIN shop_info AS RO_1 ON RO_1.del_flag = 0 AND RO_1.parent_shop_authorization = t.id"
        )
        .setTableAlias("RO_1")
        .setColumnName("country")
        .setNeedGroupBy(true)
    );
    map.put(
      "shops.hasAdsSetting",
      new OptionalJoinField()
        .setJoinPart(
          "LEFT JOIN shop_info AS RO_2 ON RO_2.del_flag = 0 AND RO_2.parent_shop_authorization = t.id"
        )
        .setTableAlias("RO_2")
        .setColumnName("has_ads_setting")
        .setNeedGroupBy(true)
    );
    map.put(
      "shops.sellerAuthStatus",
      new OptionalJoinField()
        .setJoinPart(
          "LEFT JOIN shop_info AS RO_3 ON RO_3.del_flag = 0 AND RO_3.parent_shop_authorization = t.id"
        )
        .setTableAlias("RO_3")
        .setColumnName("seller_auth_status")
        .setNeedGroupBy(true)
    );
    map.put(
      "shops.updateAuthTime",
      new OptionalJoinField()
        .setJoinPart(
          "LEFT JOIN shop_info AS RO_4 ON RO_4.del_flag = 0 AND RO_4.parent_shop_authorization = t.id"
        )
        .setTableAlias("RO_4")
        .setColumnName("update_auth_time")
        .setNeedGroupBy(true)
    );
    map.put(
      "shops.authTime",
      new OptionalJoinField()
        .setJoinPart(
          "LEFT JOIN shop_info AS RO_5 ON RO_5.del_flag = 0 AND RO_5.parent_shop_authorization = t.id"
        )
        .setTableAlias("RO_5")
        .setColumnName("auth_time")
        .setNeedGroupBy(true)
    );
    map.put(
      "shops.errorAuthTime",
      new OptionalJoinField()
        .setJoinPart(
          "LEFT JOIN shop_info AS RO_6 ON RO_6.del_flag = 0 AND RO_6.parent_shop_authorization = t.id"
        )
        .setTableAlias("RO_6")
        .setColumnName("error_auth_time")
        .setNeedGroupBy(true)
    );

    return map;
  }

  private String shops_country;
  private List<String> shops_countryInList;
  private Boolean shops_hasAdsSetting;
  private List<String> shops_hasAdsSettingInList;
  private String shops_sellerAuthStatus;
  private List<String> shops_sellerAuthStatusInList;

  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private java.util.Date shops_updateAuthTime;

  /**
   * 最早更新授权时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private String shops_updateAuthTimeStart;

  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private String shops_updateAuthTimeEnd;

  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private java.util.Date shops_authTime;

  /**
   * 最早授权日期
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private String shops_authTimeStart;

  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private String shops_authTimeEnd;

  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private java.util.Date shops_errorAuthTime;

  /**
   * 最早授权异常时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private String shops_errorAuthTimeStart;

  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private String shops_errorAuthTimeEnd;

  /**
   * 编号
   */
  private Long id;

  /**
   * 最小编号
   */
  private Long idMin;

  /**
   * 最大编号
   */
  private Long idMax;

  /**
   * 编号 比较(eq)
   */
  private Long idEq;
  /**
   * 编号 比较(neq)
   */
  private Long idNeq;
  /**
   * 编号 比较(gt)
   */
  private Long idGt;
  /**
   * 编号 比较(gte)
   */
  private Long idGte;
  /**
   * 编号 比较(lt)
   */
  private Long idLt;
  /**
   * 编号 比较(lte)
   */
  private Long idLte;
  /**
   * 编号 比较(contains)
   */
  private Long idContains;
  /**
   * 编号 比较(notcontains)
   */
  private Long idNotcontains;
  /**
   * 编号 比较(startswith)
   */
  private Long idStartswith;
  /**
   * 编号 比较(endswith)
   */
  private Long idEndswith;
  /**
   * 编号 比较(isnull)
   */
  private Boolean idIsnull;
  /**
   * 编号 比较(isnotnull)
   */
  private Boolean idIsnotnull;

  /**
   * 最早创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date createTimeStart;

  /**
   * 最晚创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date createTimeEnd;

  /**
   * 创建时间 比较(eq)
   */
  private Date createTimeEq;
  /**
   * 创建时间 比较(neq)
   */
  private Date createTimeNeq;
  /**
   * 创建时间 比较(gt)
   */
  private Date createTimeGt;
  /**
   * 创建时间 比较(gte)
   */
  private Date createTimeGte;
  /**
   * 创建时间 比较(lt)
   */
  private Date createTimeLt;
  /**
   * 创建时间 比较(lte)
   */
  private Date createTimeLte;
  /**
   * 创建时间 比较(contains)
   */
  private Date createTimeContains;
  /**
   * 创建时间 比较(notcontains)
   */
  private Date createTimeNotcontains;
  /**
   * 创建时间 比较(startswith)
   */
  private Date createTimeStartswith;
  /**
   * 创建时间 比较(endswith)
   */
  private Date createTimeEndswith;
  /**
   * 创建时间 比较(isnull)
   */
  private Boolean createTimeIsnull;
  /**
   * 创建时间 比较(isnotnull)
   */
  private Boolean createTimeIsnotnull;

  /**
   * 创建人
   */
  private Long createUser;

  /**
   * 最小创建人
   */
  private Long createUserMin;

  /**
   * 最大创建人
   */
  private Long createUserMax;

  /**
   * 创建人 比较(eq)
   */
  private Long createUserEq;
  /**
   * 创建人 比较(neq)
   */
  private Long createUserNeq;
  /**
   * 创建人 比较(gt)
   */
  private Long createUserGt;
  /**
   * 创建人 比较(gte)
   */
  private Long createUserGte;
  /**
   * 创建人 比较(lt)
   */
  private Long createUserLt;
  /**
   * 创建人 比较(lte)
   */
  private Long createUserLte;
  /**
   * 创建人 比较(contains)
   */
  private Long createUserContains;
  /**
   * 创建人 比较(notcontains)
   */
  private Long createUserNotcontains;
  /**
   * 创建人 比较(startswith)
   */
  private Long createUserStartswith;
  /**
   * 创建人 比较(endswith)
   */
  private Long createUserEndswith;
  /**
   * 创建人 比较(isnull)
   */
  private Boolean createUserIsnull;
  /**
   * 创建人 比较(isnotnull)
   */
  private Boolean createUserIsnotnull;

  /**
   * 最早更新时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date lastUpdateTimeStart;

  /**
   * 最晚更新时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date lastUpdateTimeEnd;

  /**
   * 更新时间 比较(eq)
   */
  private Date lastUpdateTimeEq;
  /**
   * 更新时间 比较(neq)
   */
  private Date lastUpdateTimeNeq;
  /**
   * 更新时间 比较(gt)
   */
  private Date lastUpdateTimeGt;
  /**
   * 更新时间 比较(gte)
   */
  private Date lastUpdateTimeGte;
  /**
   * 更新时间 比较(lt)
   */
  private Date lastUpdateTimeLt;
  /**
   * 更新时间 比较(lte)
   */
  private Date lastUpdateTimeLte;
  /**
   * 更新时间 比较(contains)
   */
  private Date lastUpdateTimeContains;
  /**
   * 更新时间 比较(notcontains)
   */
  private Date lastUpdateTimeNotcontains;
  /**
   * 更新时间 比较(startswith)
   */
  private Date lastUpdateTimeStartswith;
  /**
   * 更新时间 比较(endswith)
   */
  private Date lastUpdateTimeEndswith;
  /**
   * 更新时间 比较(isnull)
   */
  private Boolean lastUpdateTimeIsnull;
  /**
   * 更新时间 比较(isnotnull)
   */
  private Boolean lastUpdateTimeIsnotnull;

  /**
   * 更新人
   */
  private Long lastUpdateUser;

  /**
   * 最小更新人
   */
  private Long lastUpdateUserMin;

  /**
   * 最大更新人
   */
  private Long lastUpdateUserMax;

  /**
   * 更新人 比较(eq)
   */
  private Long lastUpdateUserEq;
  /**
   * 更新人 比较(neq)
   */
  private Long lastUpdateUserNeq;
  /**
   * 更新人 比较(gt)
   */
  private Long lastUpdateUserGt;
  /**
   * 更新人 比较(gte)
   */
  private Long lastUpdateUserGte;
  /**
   * 更新人 比较(lt)
   */
  private Long lastUpdateUserLt;
  /**
   * 更新人 比较(lte)
   */
  private Long lastUpdateUserLte;
  /**
   * 更新人 比较(contains)
   */
  private Long lastUpdateUserContains;
  /**
   * 更新人 比较(notcontains)
   */
  private Long lastUpdateUserNotcontains;
  /**
   * 更新人 比较(startswith)
   */
  private Long lastUpdateUserStartswith;
  /**
   * 更新人 比较(endswith)
   */
  private Long lastUpdateUserEndswith;
  /**
   * 更新人 比较(isnull)
   */
  private Boolean lastUpdateUserIsnull;
  /**
   * 更新人 比较(isnotnull)
   */
  private Boolean lastUpdateUserIsnotnull;

  /**
   * 账号名称(模糊搜索)
   */
  private String name;

  /**
   * 账号名称 比较(eq)
   */
  private String nameEq;
  /**
   * 账号名称 比较(neq)
   */
  private String nameNeq;
  /**
   * 账号名称 比较(gt)
   */
  private String nameGt;
  /**
   * 账号名称 比较(gte)
   */
  private String nameGte;
  /**
   * 账号名称 比较(lt)
   */
  private String nameLt;
  /**
   * 账号名称 比较(lte)
   */
  private String nameLte;
  /**
   * 账号名称 比较(contains)
   */
  private String nameContains;
  /**
   * 账号名称 比较(notcontains)
   */
  private String nameNotcontains;
  /**
   * 账号名称 比较(startswith)
   */
  private String nameStartswith;
  /**
   * 账号名称 比较(endswith)
   */
  private String nameEndswith;
  /**
   * 账号名称 比较(isnull)
   */
  private Boolean nameIsnull;
  /**
   * 账号名称 比较(isnotnull)
   */
  private Boolean nameIsnotnull;

  /**
   * 账号名称(精确搜索)
   */
  private List<String> nameInList;

  /**
   * 地区
   */
  private Long country;

  /**
   * 地区 比较(eq)
   */
  private Long countryEq;
  /**
   * 地区 比较(neq)
   */
  private Long countryNeq;
  /**
   * 地区 比较(gt)
   */
  private Long countryGt;
  /**
   * 地区 比较(gte)
   */
  private Long countryGte;
  /**
   * 地区 比较(lt)
   */
  private Long countryLt;
  /**
   * 地区 比较(lte)
   */
  private Long countryLte;
  /**
   * 地区 比较(contains)
   */
  private Long countryContains;
  /**
   * 地区 比较(notcontains)
   */
  private Long countryNotcontains;
  /**
   * 地区 比较(startswith)
   */
  private Long countryStartswith;
  /**
   * 地区 比较(endswith)
   */
  private Long countryEndswith;
  /**
   * 地区 比较(isnull)
   */
  private Boolean countryIsnull;
  /**
   * 地区 比较(isnotnull)
   */
  private Boolean countryIsnotnull;
  /**
   * 地区的名称 比较(eq)
   */
  private String countryNameEq;
  /**
   * 地区的名称 比较(neq)
   */
  private String countryNameNeq;
  /**
   * 地区的名称 比较(gt)
   */
  private String countryNameGt;
  /**
   * 地区的名称 比较(gte)
   */
  private String countryNameGte;
  /**
   * 地区的名称 比较(lt)
   */
  private String countryNameLt;
  /**
   * 地区的名称 比较(lte)
   */
  private String countryNameLte;
  /**
   * 地区的名称 比较(contains)
   */
  private String countryNameContains;
  /**
   * 地区的名称 比较(notcontains)
   */
  private String countryNameNotcontains;
  /**
   * 地区的名称 比较(startswith)
   */
  private String countryNameStartswith;
  /**
   * 地区的名称 比较(endswith)
   */
  private String countryNameEndswith;
  /**
   * 地区的名称 比较(isnull)
   */
  private Boolean countryNameIsnull;
  /**
   * 地区的名称 比较(isnotnull)
   */
  private Boolean countryNameIsnotnull;

  /**
   * 地区(范围搜索)
   */
  private List<Long> countryInList;

  /**
   * SellerID(模糊搜索)
   */
  private String sellerId;

  /**
   * SellerID 比较(eq)
   */
  private String sellerIdEq;
  /**
   * SellerID 比较(neq)
   */
  private String sellerIdNeq;
  /**
   * SellerID 比较(gt)
   */
  private String sellerIdGt;
  /**
   * SellerID 比较(gte)
   */
  private String sellerIdGte;
  /**
   * SellerID 比较(lt)
   */
  private String sellerIdLt;
  /**
   * SellerID 比较(lte)
   */
  private String sellerIdLte;
  /**
   * SellerID 比较(contains)
   */
  private String sellerIdContains;
  /**
   * SellerID 比较(notcontains)
   */
  private String sellerIdNotcontains;
  /**
   * SellerID 比较(startswith)
   */
  private String sellerIdStartswith;
  /**
   * SellerID 比较(endswith)
   */
  private String sellerIdEndswith;
  /**
   * SellerID 比较(isnull)
   */
  private Boolean sellerIdIsnull;
  /**
   * SellerID 比较(isnotnull)
   */
  private Boolean sellerIdIsnotnull;

  /**
   * SellerID(精确搜索)
   */
  private List<String> sellerIdInList;

  /**
   * 同步状态
   */
  private String status;

  /**
   * 同步状态 比较(eq)
   */
  private String statusEq;
  /**
   * 同步状态 比较(neq)
   */
  private String statusNeq;
  /**
   * 同步状态 比较(gt)
   */
  private String statusGt;
  /**
   * 同步状态 比较(gte)
   */
  private String statusGte;
  /**
   * 同步状态 比较(lt)
   */
  private String statusLt;
  /**
   * 同步状态 比较(lte)
   */
  private String statusLte;
  /**
   * 同步状态 比较(contains)
   */
  private String statusContains;
  /**
   * 同步状态 比较(notcontains)
   */
  private String statusNotcontains;
  /**
   * 同步状态 比较(startswith)
   */
  private String statusStartswith;
  /**
   * 同步状态 比较(endswith)
   */
  private String statusEndswith;
  /**
   * 同步状态 比较(isnull)
   */
  private Boolean statusIsnull;
  /**
   * 同步状态 比较(isnotnull)
   */
  private Boolean statusIsnotnull;

  /**
   * 同步状态(精确搜索)
   */
  private List<String> statusInList;

  /**
   * 表单名称
   */
  private String formName;

  /**
   * 工作流状态
   */
  private Integer wfStatus;
}
